#include "BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h"
#ifdef __cplusplus
extern "C" {
#endif
btGeneric6DofSpringConstraintDoubleData2* bullet_NewbtGeneric6DofSpringConstraintDoubleData2(){
	btGeneric6DofSpringConstraintDoubleData2* wrap_out = new btGeneric6DofSpringConstraintDoubleData2();
	return wrap_out;
}

btGeneric6DofConstraintDoubleData2* bullet_btGeneric6DofSpringConstraintDoubleData2_GetFieldOfM_6dofData(btGeneric6DofSpringConstraintDoubleData2* c_this){
	return (btGeneric6DofConstraintDoubleData2*)(&c_this->m_6dofData);
}

double** bullet_btGeneric6DofSpringConstraintDoubleData2_GetFieldOfM_equilibriumPoint(btGeneric6DofSpringConstraintDoubleData2* c_this){
	return (double**)(&c_this->m_equilibriumPoint);
}

double** bullet_btGeneric6DofSpringConstraintDoubleData2_GetFieldOfM_springDamping(btGeneric6DofSpringConstraintDoubleData2* c_this){
	return (double**)(&c_this->m_springDamping);
}

int** bullet_btGeneric6DofSpringConstraintDoubleData2_GetFieldOfM_springEnabled(btGeneric6DofSpringConstraintDoubleData2* c_this){
	return (int**)(&c_this->m_springEnabled);
}

double** bullet_btGeneric6DofSpringConstraintDoubleData2_GetFieldOfM_springStiffness(btGeneric6DofSpringConstraintDoubleData2* c_this){
	return (double**)(&c_this->m_springStiffness);
}

btGeneric6DofSpringConstraintData* bullet_NewbtGeneric6DofSpringConstraintData(){
	btGeneric6DofSpringConstraintData* wrap_out = new btGeneric6DofSpringConstraintData();
	return wrap_out;
}

btGeneric6DofConstraintData* bullet_btGeneric6DofSpringConstraintData_GetFieldOfM_6dofData(btGeneric6DofSpringConstraintData* c_this){
	return (btGeneric6DofConstraintData*)(&c_this->m_6dofData);
}

float** bullet_btGeneric6DofSpringConstraintData_GetFieldOfM_equilibriumPoint(btGeneric6DofSpringConstraintData* c_this){
	return (float**)(&c_this->m_equilibriumPoint);
}

float** bullet_btGeneric6DofSpringConstraintData_GetFieldOfM_springDamping(btGeneric6DofSpringConstraintData* c_this){
	return (float**)(&c_this->m_springDamping);
}

int** bullet_btGeneric6DofSpringConstraintData_GetFieldOfM_springEnabled(btGeneric6DofSpringConstraintData* c_this){
	return (int**)(&c_this->m_springEnabled);
}

float** bullet_btGeneric6DofSpringConstraintData_GetFieldOfM_springStiffness(btGeneric6DofSpringConstraintData* c_this){
	return (float**)(&c_this->m_springStiffness);
}

btGeneric6DofSpringConstraint* bullet_NewbtGeneric6DofSpringConstraint(btRigidBody* rbA,btRigidBody* rbB,btTransform* frameInA,btTransform* frameInB,bool useLinearReferenceFrameA){
	btRigidBody& c_arg_rbA=(btRigidBody&)(*rbA);
	btRigidBody& c_arg_rbB=(btRigidBody&)(*rbB);
	btTransform const& c_arg_frameInA=(btTransform const&)(*frameInA);
	btTransform const& c_arg_frameInB=(btTransform const&)(*frameInB);
	bool c_arg_useLinearReferenceFrameA=useLinearReferenceFrameA;
	btGeneric6DofSpringConstraint* wrap_out = new btGeneric6DofSpringConstraint(c_arg_rbA,c_arg_rbB,c_arg_frameInA,c_arg_frameInB,c_arg_useLinearReferenceFrameA);
	return wrap_out;
}

btGeneric6DofSpringConstraint* bullet_NewbtGeneric6DofSpringConstraint1(btRigidBody* rbB,btTransform* frameInB,bool useLinearReferenceFrameB){
	btRigidBody& c_arg_rbB=(btRigidBody&)(*rbB);
	btTransform const& c_arg_frameInB=(btTransform const&)(*frameInB);
	bool c_arg_useLinearReferenceFrameB=useLinearReferenceFrameB;
	btGeneric6DofSpringConstraint* wrap_out = new btGeneric6DofSpringConstraint(c_arg_rbB,c_arg_frameInB,c_arg_useLinearReferenceFrameB);
	return wrap_out;
}

void bullet_btGeneric6DofSpringConstraint_enableSpring(btGeneric6DofSpringConstraint* c_this,int index,bool onOff){
	int c_arg_index=index;
	bool c_arg_onOff=onOff;
	c_this->enableSpring(c_arg_index,c_arg_onOff);
}

double bullet_btGeneric6DofSpringConstraint_getDamping(btGeneric6DofSpringConstraint* c_this,int index){
	int c_arg_index=index;
	btScalar c_out = c_this->getDamping(c_arg_index);
	double wrap_out = (c_out);
	return wrap_out;
}

double bullet_btGeneric6DofSpringConstraint_getEquilibriumPoint(btGeneric6DofSpringConstraint* c_this,int index){
	int c_arg_index=index;
	btScalar c_out = c_this->getEquilibriumPoint(c_arg_index);
	double wrap_out = (c_out);
	return wrap_out;
}

double bullet_btGeneric6DofSpringConstraint_getStiffness(btGeneric6DofSpringConstraint* c_this,int index){
	int c_arg_index=index;
	btScalar c_out = c_this->getStiffness(c_arg_index);
	double wrap_out = (c_out);
	return wrap_out;
}

bool bullet_btGeneric6DofSpringConstraint_isSpringEnabled(btGeneric6DofSpringConstraint* c_this,int index){
	int c_arg_index=index;
	bool c_out = c_this->isSpringEnabled(c_arg_index);
	bool wrap_out = (c_out);
	return wrap_out;
}

void bullet_btGeneric6DofSpringConstraint_setDamping(btGeneric6DofSpringConstraint* c_this,int index,double damping){
	int c_arg_index=index;
	btScalar c_arg_damping=damping;
	c_this->setDamping(c_arg_index,c_arg_damping);
}

void bullet_btGeneric6DofSpringConstraint_setEquilibriumPoint(btGeneric6DofSpringConstraint* c_this){
	c_this->setEquilibriumPoint();
}

void bullet_btGeneric6DofSpringConstraint_setEquilibriumPoint1(btGeneric6DofSpringConstraint* c_this,int index){
	int c_arg_index=index;
	c_this->setEquilibriumPoint(c_arg_index);
}

void bullet_btGeneric6DofSpringConstraint_setEquilibriumPoint2(btGeneric6DofSpringConstraint* c_this,int index,double val){
	int c_arg_index=index;
	btScalar c_arg_val=val;
	c_this->setEquilibriumPoint(c_arg_index,c_arg_val);
}

void bullet_btGeneric6DofSpringConstraint_setStiffness(btGeneric6DofSpringConstraint* c_this,int index,double stiffness){
	int c_arg_index=index;
	btScalar c_arg_stiffness=stiffness;
	c_this->setStiffness(c_arg_index,c_arg_stiffness);
}

#ifdef __cplusplus
}
#endif
